// 导入自己封装的 axios 库
import { axios } from '../../request/myAxios';

// 接口请求参数
const params = {
  query:'',
  cid:'',
  pagenum:1,
  pagesize:10
}

// 总条数，因为要在不同的函数中使用，所以在外面定义
let totalCount = 0;

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // tab 栏数据
    activeIndex: 0,
    tabs: [
      {
        id: 1,
        text: '综合'
      },
      {
        id: 2,
        text: '销量'
      },
      {
        id: 3,
        text: '价格'
      }
    ],
    // 商品列表数据
    goodsList: []
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // console.log(options);
    // 如果值获取到的是 undefined，把值改成 ''
    // 从分类页过来的是传递分类 id
    params.cid = options.cat_id || '';
    // 从搜索页过来的是传递关键词
    params.query = options.query || '';
    // 发送请求获取商品列表
    this.getGoodsList();
  },
  // 切换 tabs 选项卡
  changeTabsIndex(e){
    // 获取当前点击的索引值
    const { index } = e.currentTarget.dataset;
    // 改变 activeIndex 让选项卡的类名切换
    this.setData({
      activeIndex: index
    })
  },
  // 获取商品列表
  getGoodsList(){
    // 发送请求
    axios({ 
      url: '/goods/search',
      data: params 
    })
    .then(res=>{
      // console.log(res);
      // 把请求获取的总条数保存起来
      totalCount = res.total;
      // 成功绑定数据
      this.setData({
        // 注意这里是数组的连接
        goodsList: [ ...this.data.goodsList, ...res.goods ]
      });
      // 停止当前页面下拉刷新提示，否则小程序的下拉动画在手机上一直存在
      // 没有下拉动画的时候，调用这个 API 也不会报错，可放心使用。
      wx.stopPullDownRefresh();
    })
  },
  // 下拉刷新功能
  onPullDownRefresh(){
    // 情况商品列表数据
    this.setData({
      goodsList: []
    });
    // 请求参数中的页面要重新变第一页
    params.pagenum = 1;
    // 在请求新数据
    this.getGoodsList();
  },

  // 上拉触底事件，离开页面底部还有 50px 的时候会触发该事件
  onReachBottom(){
    // console.log('到底了');
    // 总页数计算：Math.ceil(总条数/页容量)
    if( Math.ceil(totalCount/params.pagesize) > params.pagenum  ){
      // 如果还有数据，页码增加 1
      params.pagenum++;
      // 重新发送请求
      this.getGoodsList();
    }else{
      // 界面中显示消息提示框，提示用户没有数据
      wx.showToast({ title: '没有数据了' });
    }
  }

});